Ví dụ - Object Adapter Adapter pattern

 /** * Java code sample */  interface Stack {  void push (Object o);  Object pop ();  Object top (); }  /* DoubleLinkedList */ class DList {  public void insert (DNode pos, Object o) {... }  public void remove (DNode pos, Object o) {... }    public void insertHead (Object o) {... }  public void insertTail (Object o) {... }    public Object removeHead () {... }  public Object removeTail () {... }    public Object getHead () {... }  public Object getTail () {... } }  /* Adapt DList class to Stack interface */ class DListStack implements Stack  {   private DList _dlist;    public DListStack() { _dlist = new DList(); }  public void push (Object o) { _dlist.insertTail (o);  }    public Object pop () { return _dlist.removeTail ();  }    public Object top () { return _dlist.getTail ();  } }